// 基础模块model定义

package models

import (
	"net/http"
	"time"
)

// 浏览记录
type Record struct {
	Id        uint32 `json:"id" orm:"auto;pk"`
	Ip        string `json:"ip" label:"访客IP地址"`
	UserAgent string `json:"userAgent" label:"访客浏览器信息"`
	Path      string `json:"path" label:"访问路径"`
	Params    string `json:"params" label:"请求参数"`
	Status    uint32 `json:"status" orm:"default(200)"`
	Method    string `json:"method" orm:"size(10);default(POST)"`

	AtTime time.Time `json:"atTime" orm:"auto_now_add;type(datetime)" label:"浏览时间"`
}

// 菜单
type Menu struct {
	Id   uint32 `json:"id" orm:"pk"`
	Pid  uint32 `json:"pid" label:"上级"`
	Name string `json:"name" orm:"size(10)" label:"名称"`
	Icon string `json:"icon" orm:"size(20)" label:"图标"`
	Page string `json:"page" orm:"size(50)" label:"对应页面"`
}

// 系统资源
type Resource struct {
	Id       string `json:"id" orm:"pk;size(10)" label:"资源ID"`
	ModuleId string `json:"moduleId" orm:"size(20)" label:"归属模块"`
	Name     string `json:"name" orm:"size(20);" label:"资源名称"`
	ResUrl   string `json:"resUrl" label:"资源访问路径"`

	HttpMethod string `json:"httpMethod" orm:"size(10);default(POST)" label:"允许访问的HTTP METHOD"`

	HttpFunc http.HandlerFunc `json:"-" orm:"-"` //控制器

	Params string `json:"params" label:"参数"`
	Remark string `json:"remark" label:"备注"`
}

// 用户
type User struct {
	Id       uint32    `json:"id" orm:"auto;pk"`
	UserName string    `json:"userName" orm:"size(20);unique" label:"用户名"`
	Passwd   string    `json:"passwd" orm:"size(32)" label:"密码，32位md5加密存储"`
	Phone    string    `json:"phone" orm:"size(11)" label:"手机号码"`
	Name     string    `json:"name" orm:"size(10)" label:"真实姓名"`
	Status   bool      `json:"status" orm:"default(true)" label:"状态"`
	AddTime  time.Time `json:"addTime" orm:"auto_now_add;type(datetime)" label:"注册时间"`
	Roles    string    `json:"roles" label:"用户角色"`
	Remark   string    `json:"remark" label:"备注"`
	Depts    string    `json:"depts" label:"可见系部"`
}

// 角色
type Role struct {
	Id    uint32 `json:"id" orm:"auto;pk"`
	Name  string `json:"name" orm:"size(10)" label:"角色名称"`
	Menus string `json:"menus" label:"可见菜单"`
	Res   string `json:"res" orm:"type(text)" label:"可用资源"`
}

// 系和专业
type Special struct {
	Id     uint32  `json:"id" orm:"auto;pk"`
	Pid    uint32  `json:"pid" label:"上级专业: 0系, >0专业"`
	Name   string  `json:"name" orm:"size(20)" label:"专业名称"`
	Remark string  `json:"remark" label:"备注"`
	Sequ   uint32  `json:"sequ" label:"显示顺序"`
	Fee    float32 `json:"fee" label:"费用"`
	Quota  uint32  `json:"quota" label:"名额"`
	Types  string  `json:"types" label:"类别: 1对口升学, 2中专3+2, 3技工3+2"`
}

// 全局设置
type GlobalSet struct {
	Id    uint32 `json:"id" orm:"auto;pk"`
	Name  string `json:"name" orm:"size(20)"`
	Value string `json:"value"`
	Label string `json:"label" orm:"size(20)"`
}
